package com.doctcloud.hisinfo.histable.enums;

import lombok.Getter;

/**
 * 临床科室属性枚举类
 * 映射科室属性的编码与名称
 */
@Getter
public enum DeptClinicAttrEnum {

    /**
     * 临床科室
     */
    CLINICAL("0", "临床"),

    /**
     * 辅诊科室
     */
    DIAGNOSTIC("1", "辅诊"),

    /**
     * 护理单元
     */
    NURSING_UNIT("2", "护理单元"),

    /**
     * 机关科室
     */
    ADMINISTRATION("3", "机关"),

    /**
     * 其他科室
     */
    OTHER("4", "其他");

    /**
     * 属性编码（对应数据库字段值）
     */
    private final String code;

    /**
     * 属性名称（用于前端展示或日志输出）
     */
    private final String name;

    // 新增：校验代码是否有效
    public static boolean isValidCode(String code) {
        for (DeptClinicAttrEnum enumItem : values()) {
            if (enumItem.code.toString().equals(code)) {
                return true;
            }
        }
        return false;
    }

    /**
     * 构造方法
     * @param code 属性编码
     * @param name 属性名称
     */
    DeptClinicAttrEnum(String code, String name) {
        this.code = code;
        this.name = name;
    }

    /**
     * 根据编码获取对应的枚举实例
     * @param code 属性编码（如"0"、"1"、"2"等）
     * @return 对应的枚举实例，若未匹配则返回null（或可自定义默认值）
     */
    public static DeptClinicAttrEnum getByCode(String code) {
        for (DeptClinicAttrEnum property : values()) {
            if (property.code.equals(code)) {
                return property;
            }
        }
        return null; // 无匹配编码时返回null，也可根据业务需求返回OTHER
    }

    /**
     * 根据编码获取属性名称
     * @param code 属性编码
     * @return 属性名称，若编码无效则返回"未知"
     */
    public static String getNameByCode(String code) {
        DeptClinicAttrEnum property = getByCode(code);
        return property != null ? property.getName() : "未知";
    }
}